/**
 * 
 */
package net.sisgac.despacho_mercaderia.action;

import java.util.List;

import net.sisgac.atencion_cliente.model.Mercaderia;
import net.sisgac.atencion_cliente.model.SolicitudServicio;
import net.sisgac.atencion_cliente.service.AtencionClienteService;
import net.sisgac.atencion_cliente.service.AtencionClienteServiceImpl;
import net.sisgac.cliente.model.Cliente;
import net.sisgac.despacho_mercaderia.model.DetalleOrden;
import net.sisgac.despacho_mercaderia.model.OrdenServicio;
import net.sisgac.despacho_mercaderia.service.DespachoMercaderiaService;
import net.sisgac.despacho_mercaderia.service.DespachoMercaderiaServiceImpl;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;



import com.opensymphony.*;
/**
 * @author Luis Yarleque
 
 *
 */

public class GestionarOrdenServicioAction  extends ActionSupport implements ModelDriven<OrdenServicio>{
	
	private static final long serialVersionUID = 1L;
	private Log log = LogFactory.getLog(getClass());
	
	
	DespachoMercaderiaService despachoService;
	AtencionClienteService atencionClienteService;
	
	private SolicitudServicio sol;
	private String mensaje;
	private Mercaderia mercaderia;
	private OrdenServicio o;
	private DetalleOrden det;
	private List<Mercaderia> listMercaderia;
	private List<Cliente> listCliente;
	private int idCriterio;
	
	
	public SolicitudServicio getSol() {
		return sol;
	}
	
	public void setSol(SolicitudServicio sol) {
		this.sol = sol;
	}
	
	public DetalleOrden getDet() {
		return det;
	}
	
	public void setDet(DetalleOrden det) {
		this.det = det;
	}
	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}
	public List<Mercaderia> getListMercaderia() {
		return listMercaderia;
	}

	public Mercaderia getMercaderia() {
		return mercaderia;
	}

	public void setMercaderia(Mercaderia mercaderia) {
		this.mercaderia = mercaderia;
	}

	public OrdenServicio getO() {
		return o;
	}


	public void setO(OrdenServicio o) {
		this.o = o;
	}


	public void setListMercaderia(List<Mercaderia> listMercaderia) {
		this.listMercaderia = listMercaderia;
	}

	public List<Cliente> getListCliente() {
		return listCliente;
	}

	public void setListCliente(List<Cliente> listCliente) {
		this.listCliente = listCliente;
	}

	public GestionarOrdenServicioAction(){
		despachoService = new DespachoMercaderiaServiceImpl();
		atencionClienteService = new AtencionClienteServiceImpl();
	}

	
	public String form_GestionarOrdenServicio(){
		String vista = "exito";
		mensaje = despachoService.grabarOrdenServicio(o);
		mensaje += despachoService.grabarDetalleOrden(det);
		return vista;
	}
		

	public String form_Cotizar(){
		String vista= "exito1";
		listMercaderia = despachoService.listarMercaderia(sol.getIdSolicitudServicio());
		
		
		return vista;
		
	}

	
	public String buscarSolicitud( ){
		String vista="exito";
		try {
			atencionClienteService.buscar_SolicitudxCodigo(sol.getIdSolicitudServicio());
			vista="exito";
		}catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return vista;
	}
	
	public String generarOrden(){
		log.info("method:registrar");
		String mensaje="exito";
		String msg="";
		try{
			despachoService.grabarOrdenServicio(o);
			despachoService.grabarDetalleOrden(det);
			
		}catch (Exception e) {
			// TODO: handle exception
		}
		
		
		
		return mensaje;
		
	}
	
/*	public OrdenDeServicio buscarOrdenServicioPendiente(){
		return null;
		
	}*/
	
	/*public String listarProductos(){

		listMercaderia = despachoService.listarProductos();

		return "exito";
		
	}*/
	
	public <Tipo> List<Tipo> listarTipoProd(){
		return null;
		
	}
	
	public String actualizar(){
		log.info("method:actualizar");
		
		try{
				despachoService.actualizar(mercaderia);
				mensaje="Actualizacion Satisfactoria";
			
		}catch(Exception e){
		log.error("ERROR",e);
		mensaje=e.getMessage();
		return Action.ERROR;
		}
		return Action.SUCCESS;
		

		
		
	}
	 
	public String grabar(OrdenServicio producto){
		
		log.info("method:grabar");
		
		try{
			
			despachoService.grabarOrdenServicio(producto);
			mensaje = "Generacion de orden de servicio exitosa";
		}catch(Exception e){
			log.error("****ERROR****",e);
			mensaje=e.getMessage();
			return Action.ERROR;
		}
		
		return Action.SUCCESS;
		
	}
	
	



	@Override
	public OrdenServicio getModel() {
		// TODO Auto-generated method stub
		return null;
	}
	
}
